_pppp_iiii_pppp_eeee creates an I/O mechanism called a pipe and returns two file
descriptors, _f_i_l_d_e_s_[[[[_0000_]]]] and _f_i_l_d_e_s_[[[[_1111_]]]]. IRIX has two distinct versions of
pipe: the SVR4 version and the SVR3.2 version. The SVR3.2 version is
faster, and is generally preferred unless STREAMS semantics are required
for a specific reason.
The SVR4 version of _pppp_iiii_pppp_eeee returns two STREAMS-based file descriptors which
are both opened for reading and writing. The _OOOO______NNNN_DDDD_EEEE_LLLL_AAAA_YYYY and _OOOO______NNNN_OOOO_NNNN_BBBB_LLLL_OOOO_CCCC_KKKK
flags are cleared. A read from _f_i_l_d_e_s_[[[[_0000_]]]] accesses the data written to
_f_i_l_d_e_s_[[[[_1111_]]]] on a first-in-first-out (FIFO) basis and a read from _f_i_l_d_e_s_[[[[_1111_]]]]
accesses the data written to _f_i_l_d_e_s_[[[[_0000_]]]] also on a FIFO basis. The
_FFFF_DDDD______CCCC_LLLL_OOOO_EEEE_XXXX_EEEE_CCCC flag will be clear on both file descriptors.
The SVR3.2 version of _pppp_iiii_pppp_eeee returns two non-STREAMS-based file
descriptors. _F_i_l_d_e_s[0] is opened for reading and _f_i_l_d_e_s[1] is opened for
writing. Up to PPPPIIIIPPPPEEEE____BBBBUUUUFFFF (defined in lllliiiimmmmiiiittttssss....hhhh) bytes of data are buffered
by the pipe before the writing process is blocked and guaranteed to be
written atomically. The _OOOO______NNNN_DDDD_EEEE_LLLL_AAAA_YYYY and _OOOO______NNNN_OOOO_NNNN_BBBB_LLLL_OOOO_CCCC_KKKK flags are cleared. A
read only file descriptor _f_i_l_d_e_s[0] accesses the data written to
_f_i_l_d_e_s[1] on a first-in-first-out (FIFO) basis.
Upon successful completion _pppp_iiii_pppp_eeee marks for update the _ssss_tttt______aaaa_tttt_iiii_mmmm_eeee_,,,, _ssss_tttt______cccc_tttt_iiii_mmmm_eeee,
and _ssss_tttt______mmmm_tttt_iiii_mmmm_eeee fields of the pipe.
To use the SVR4 version of _pppp_iiii_pppp_eeee one must normally tune the system tunable
variable _ssss_vvvv_rrrr_3333_pppp_iiii_pppp_eeee to 0 (see _ssss_yyyy_ssss_tttt_uuuu_nnnn_eeee(1M)). Otherwise, the SVR3.2 version
of _pppp_iiii_pppp_eeee is used, with the exception of applications linked against
lllliiiibbbbnnnnssssllll....ssssoooo (----llllnnnnssssllll), which normally get SVR4-style pipes by default. This
can be disabled by setting the environment variable ____LLLLIIIIBBBBNNNNSSSSLLLL____UUUUSSSSEEEE____SSSSVVVVRRRR3333____PPPPIIIIPPPPEEEE
to 1111. In this case such applications will get SVR3.2-styl pipe
semantics.
_pppp_iiii_pppp_eeee fails if:
_EEEE_MMMM_FFFF_IIII_LLLL_EEEE The maximum number of file descriptors are currently open.
_EEEE_NNNN_FFFF_IIII_LLLL_EEEE A file table entry could not be allocated.